home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK2.toast / Development Kits / QuickTake Digital Camera / MyQuickTakeApp 1.0.2 ƒ / Headers / Floating Windows (8⁄94 JW) / WindowExtensions.h
Encoding:
C/C++ Source or Header  |  1995-05-26  |  5.2 KB  |  178 lines  |  [TEXT/MMCC]

  1. /*
  2.     File:        WindowExtensions.h
  3.     
  4.     Contains:    Prototypes and data structures for the floating window library
  5.     
  6.     Written by:    Dean Yu
  7.     
  8.     Copyright:    © 1993 Apple Computer, Inc.
  9.     
  10. */
  11.  
  12. #ifndef __WINDOWEXTENSIONS__
  13. #define __WINDOWEXTENSIONS__
  14.  
  15. #ifndef __WINDOWS__
  16. #include <Windows.h>
  17. #endif
  18.  
  19. // Default to 68K calling conventions
  20.  
  21. #ifndef USESROUTINEDESCRIPTORS
  22. #define USESROUTINEDESCRIPTORS 0
  23. #endif
  24.  
  25. #ifndef __MIXEDMODE__
  26. #define kPascalStackBased                                0
  27. #define STACK_ROUTINE_PARAMETER(paramCount, paramSize)    0
  28. #endif
  29.  
  30. // Window Attributes
  31.  
  32. enum WindowAttributes {
  33.     kHasCloseBoxMask =                 0x00000001,
  34.     kHasZoomBoxMask =                 0x00000002,
  35.     kHasGrowBoxMask =                 0x00000004,
  36.     kHasModalBorderMask =             0x00000010,
  37.     kHasThickDropShadowMask =         0x00000020,
  38.     kHasDocumentTitlebarMask =         0x00001000,
  39.     kHasPaletteTitlebarMask =         0x00002000,
  40.     kHasRoundedTitlebarMask =         0x00004000,
  41.  
  42. // Attribute groupings
  43.  
  44.     kWindowGadgetsMask =            0x0000000F,
  45.     kWindowAdornmentsMask =            0x00000FF0,
  46.     kWindowTitlebarMask =            0x000FF000
  47. };
  48. typedef unsigned long WindowAttributes;
  49.  
  50. typedef struct WindowRecordExtensions *WindowExt;
  51.  
  52. // Activate event handler prototype
  53.  
  54. typedef pascal void (*ActivateHandlerProcPtr)(WindowExt theWindow, Boolean activateWindow);
  55.  
  56. enum {
  57.     uppActivateHandlerProcInfo = kPascalStackBased
  58.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowExt)))
  59.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))
  60. };
  61.  
  62. #if USESROUTINEDESCRIPTORS
  63. typedef UniversalProcPtr ActivateHandlerUPP;
  64.  
  65. #define CallActivateHandlerProc(userRoutine, theWindow, activateWindow)        \
  66.         CallUniversalProc(userRoutine, uppActivateHandlerProcInfo, theWindow, activateWindow)
  67. #define NewActivateHandlerProc(userRoutine)        \
  68.         (ActivateHandlerUPP) NewRoutineDescriptor(userRoutine, uppActivateHandlerProcInfo, GetCurrentISA())
  69. #else
  70. typedef ActivateHandlerProcPtr ActivateHandlerUPP;
  71.  
  72. #define CallActivateHandlerProc(userRoutine, theWindow, activateWindow)        \
  73.         (*userRoutine)(theWindow, activateWindow)
  74. #define NewActivateHandlerProc(userRoutine)        \
  75.         (ActivateHandlerUPP)(userRoutine)
  76. #endif
  77.  
  78. enum {
  79.     kActivateWindow                = true,
  80.     kDeactivateWindow            = false
  81. };
  82.  
  83. // Extensions to the WindowRecord
  84.  
  85. #if powerc
  86. #pragma options align=mac68k
  87. #endif
  88. struct WindowRecordExtensions {
  89.     WindowRecord                theWindow;
  90.     ActivateHandlerUPP            activateHandlerProc;
  91.     Boolean                        wasVisible;
  92. };
  93. #if powerc
  94. #pragma options align=reset
  95. #endif
  96.  
  97. typedef struct WindowRecordExtensions WindowRecordExtensions;
  98.  
  99. // 'WDEF' resource IDs.
  100.  
  101. enum {
  102.     rStandardDocumentWindowProc =    0,
  103.     rRoundedWindowProc =            1,
  104.     rFloatingWindowProc =            128
  105. };
  106.  
  107. // Window procIDs and windowKinds
  108.  
  109. enum {
  110.     kStandardDocumentWindowProc = rStandardDocumentWindowProc * 16,
  111.     kRoundedWindowProc = rRoundedWindowProc * 16,
  112.     kFloatingWindowProc = rFloatingWindowProc * 16,
  113.     
  114.     kApplicationFloaterKind = 7
  115. };
  116.  
  117. // Error codes
  118.  
  119. enum {
  120.     kUndefinedTitleBarTypeError = -1,
  121.     kWindowNotCreatedError = -2,
  122.     kInvalidWindowOrderingError = -3
  123. };
  124.  
  125. #ifdef __cplusplus
  126. extern "C" {
  127. #endif
  128.  
  129. // Floating window routines
  130.  
  131. extern pascal OSErr NewWindowReference(WindowExt *windowReference, const Rect *boundsRect, ConstStr255Param title, Boolean visible, WindowAttributes attributes, WindowExt behind, long refCon, ActivateHandlerUPP activateHandlerProc);
  132. extern pascal OSErr GetNewWindowReference(WindowExt *windowReference, short windResourceID, WindowExt behind, ActivateHandlerUPP activateHandlerProc);
  133. extern pascal void DisposeWindowReference(WindowExt windowReference);
  134. extern pascal void SelectReferencedWindow(WindowExt windowToSelect);
  135. extern pascal void HideReferencedWindow(WindowExt windowToHide);
  136. extern pascal void ShowReferencedWindow(WindowExt windowToShow);
  137. extern pascal void DragReferencedWindow(WindowExt windowToDrag, Point startPoint, const Rect *draggingBounds);
  138. extern pascal WindowExt FrontNonFloatingWindow(void);
  139. extern pascal WindowExt LastFloatingWindow(void);
  140. extern pascal Boolean WindowIsModal(WindowExt windowReference);
  141. extern pascal void DeactivateFloatersAndFirstDocumentWindow(void);
  142. extern pascal void ActivateFloatersAndFirstDocumentWindow(void);
  143. extern pascal void SuspendFloatingWindows(void);
  144. extern pascal void ResumeFloatingWindows(void);
  145. extern pascal void ValidateWindowList(void);
  146.  
  147. // Getters and Setters
  148.  
  149. extern pascal void GetWindowPortRect(WindowExt windowReference, Rect *portRect);
  150.  
  151. extern pascal void SetWindowVisible(WindowExt windowReference, Boolean windowVisible);
  152.  
  153. extern pascal void SetWindowHilite(WindowExt windowReference, Boolean windowHilite);
  154.  
  155. extern pascal void SetNextWindow(WindowExt windowReference, WindowExt nextWindow);
  156.  
  157. extern pascal RgnHandle GetContentRegion(WindowExt windowReference);
  158.  
  159. extern pascal RgnHandle GetStructureRegion(WindowExt windowReference);
  160.  
  161. extern pascal Handle GetWindowDefProc(WindowExt windowReference);
  162.  
  163. extern pascal ActivateHandlerUPP GetActivateHandlerProc(WindowExt windowReference);
  164. extern pascal void SetActivateHandlerProc(WindowExt windowReference, ActivateHandlerUPP activateHandlerProc);
  165.  
  166. extern pascal Boolean GetWasVisible(WindowExt windowReference);
  167. extern pascal void SetWasVisible(WindowExt windowReference, Boolean wasVisible);
  168.  
  169. //    Routine added by John Wang.
  170. extern pascal WindowRef WindowRefFromExt(WindowExt windowReference);
  171.  
  172. #ifdef __cplusplus
  173. }
  174. #endif
  175.  
  176. #endif
  177.  
  178.